package src.A_JavaBase;

// 包装类，这里拿Integer举例，其他几个原理都差不多
public class Oop07_PackagingGroup {
    public static void main(String[] args) {
        // 装箱 和 拆箱，基本类型与基本类型包装类之间转换
        int a = 10;
        //装箱，把基本类型转为包装类型,产生了一个Integer类的对象
        Integer aPack1 =  new Integer(a); // 方式一
        Integer aPack2  = Integer.valueOf(a); // 方式二
        //拆箱，把包装类型转为基本类型,取出包装类对象中的基本类型值
        int  a1 = aPack1.intValue();
        int  a2 = aPack2.intValue();

        Integer aPackZD = 10; // 自动装箱
        int aZD = aPackZD; // 自动拆箱

        /*
         在Integer类中为了节省空间,对-128--+127之间的256个对象进行缓存(数组)。
         在-128 +127之间的时候,直接从缓存数组中获取，如果值相同的时候,取到的对象是相同的；
         如果不在-128 +127之间, 每次都会创建一个新的对象
        */
        Integer a11 = 127;
        Integer b11= 127;
        System.out.println(a11==b11); //结果为true
        Integer a111 = 128;
        Integer b111 = 128;
        System.out.println(a111==b111); //结果为false
    }
}
